Revision: tla--devo--1.3.1--patch-8
Archive: lord@emf.net--2005
Creator: Thomas Lord <lord@emf.net>
Date: Sun Feb 13 20:23:22 PST 2005
Standard-date: 2005-02-14 04:23:22 GMT
Modified-files: libarch/apply-changeset.c
    libarch/apply-changeset.h libarch/arbdelta.c
    libarch/archive-cache.c libarch/archive-cache.h
    libarch/archive-mirror.c libarch/archive-pfs.c
    libarch/archive-pfs.h libarch/archive-setup.c
    libarch/archive.c libarch/archive.h libarch/archives.c
    libarch/archives.h libarch/build-revision.c
    libarch/build-revision.h libarch/changelogs.c
    libarch/changelogs.h libarch/changeset-report.c
    libarch/changeset-utils.c libarch/changeset-utils.h
    libarch/cmd-abrowse.c libarch/cmd-apply-changeset.c
    libarch/cmd-apply-delta.c libarch/cmd-changes.c
    libarch/cmd-changeset.c libarch/cmd-delta.c
    libarch/cmd-inventory.c libarch/cmd-library-revisions.c
    libarch/cmd-logs.c libarch/cmd-missing.c
    libarch/cmd-rbrowse.c libarch/cmd-rbrowse.h
    libarch/cmd-redo.c libarch/cmd-replay.c
    libarch/cmd-revisions.c libarch/commit.c
    libarch/configs.c libarch/diffs.c libarch/diffs.h
    libarch/exec.c libarch/inode-sig.c libarch/inode-sig.h
    libarch/inv-ids.c libarch/inv-ids.h libarch/invent.c
    libarch/invent.h libarch/libraries.c libarch/libraries.h
    libarch/library-txn.c libarch/library-txn.h
    libarch/make-changeset-files.c
    libarch/make-changeset-files.h libarch/make-changeset.c
    libarch/make-changeset.h libarch/merge-points.c
    libarch/merge-points.h libarch/missing.c libarch/my.c
    libarch/my.h libarch/namespace.c libarch/namespace.h
    libarch/patch-logs.c libarch/patch-logs.h
    libarch/pfs-dav.c libarch/pfs-dav.h libarch/pfs-fs.c
    libarch/pfs-fs.h libarch/pfs-ftp.c libarch/pfs-ftp.h
    libarch/pfs-sftp.c libarch/pfs-sftp.h
    libarch/pfs-signatures.c libarch/pfs-signatures.h
    libarch/pfs.c libarch/pfs.h libarch/pristines.c
    libarch/pristines.h libarch/proj-tree-lint.c
    libarch/project-tree.c libarch/project-tree.h
    libarch/replay.c libarch/replay.h libarch/star-merge.c
    libarch/undo.c libawk/associative.c libawk/associative.h
    libawk/relational.c libawk/relational.h
    libfsutils/copy-file.c libfsutils/copy-file.h
    libfsutils/dir-as-cwd.c libfsutils/dir-as-cwd.h
    libfsutils/dir-listing.c libfsutils/dir-listing.h
    libfsutils/ensure-dir.c libfsutils/ensure-dir.h
    libfsutils/file-contents.c libfsutils/file-contents.h
    libfsutils/link-target.c libfsutils/link-target.h
    libfsutils/link-tree.c libfsutils/read-line.c
    libfsutils/read-line.h libfsutils/safety.c
    libfsutils/safety.h libfsutils/same.c libfsutils/same.h
    libfsutils/tmp-files.c libfsutils/tmp-files.h
New-patches: lord@emf.net--2005/tla--devo--1.3.1--patch-8
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--base-0
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-1
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-2
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-3
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-4
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-5
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-6
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-7
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-8
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-9
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--patch-10
    lord@emf.net--libawk-exp-2005/tla--peek-str-const--1.3.1--version-0
Summary: [on bug libawk-api-bogosities] step 2 of libawk cleanup
Keywords: 


* Step 3: `const'-ify relational and associative tables


  [[cartouche
     /Note:/

     A prerequesit for these changes are some changes to `hackerlab':

     /Archive:/ `lord@emf.net--2005'

     /Version:/ `hackerlab--devo--1.1'

     /Revisions:/ `patch-2'
  ]]

  Keys and values returned from associative table functions and
  strings returned by `rel_peek_record' are "owned" by `libawk'.
  `libawk' is responsible for their memory management (they have a
  dynamic extent limited by the next mutation to the associative
  binding or relational table slot they were read from).  `libawk'
  is permitted to share the data in these strings for more than
  one key, value, or table element.

  Therefore, it is an error for `libawk' clients to modify these
  strings, to reallocate them, or to free them.  For some time,
  `libarch' in `tla' has violated all three of these rules, in some
  cases in the form of outright bugs rather than mere abstraction
  violations.

  To help detect such errors, `const' was added to the declarations in
  `libawk'.  This introduced many compilation errors which could, for
  the most part, be fixed by adding `const' declarations to other
  files (which might in turn, introduce still more compilation
  errors).  This procedure was iterated until all errors were
  eliminated, resulting in changes throughout `tla' and some in
  `hackerlab'.  A few outright bugs in `libarch' were uncovered in the
  process (and fixed).


